#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define ONE 0x1   // 0000 0001
#define TWO 0x2   // 0000 0010
#define THREE 0x4 // 0000 0100

int main()
{
  printf("%d\n", stdin->_fileno);
  printf("%d\n", stdout->_fileno);
  printf("%d\n", stderr->_fileno);
  //int fd1 = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //int fd2 = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //int fd3 = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //int fd4 = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //printf("open success, fd: %d\n", fd1);
  //printf("open success, fd: %d\n", fd2);
  //printf("open success, fd: %d\n", fd3);
  //printf("open success, fd: %d\n", fd4);
  //int fd = open("log.txt", O_RDONLY);
  //if(fd == -1){
  //  perror("open:");
  //  return 1;
  //}
  //printf("open success, fd: %d\n", fd);
  //char buff[64];
  //memset(buff, '\0', sizeof buff);
  //read(fd, buff, sizeof(buff));
  //printf("%s", buff);
  
  //// 设置umask为0
  //umask(0);
  //// 以只写的方式打开，如果不存在该文件，则创建，每次打开会清空,并设置权限为666
  //// int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0666);
  //int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
  //if(fd == -1){
  //  perror("open:");
  //  return 1;
  //}
  //// 向文件写入内容
  //// const char* s = "hello myfile\n";
  //const char* s = "aa\n";
  //write(fd, s, strlen(s));    // 不需要+1
  //printf("open success, fd: %d\n", fd);
  //close(fd);
  //return 0;
}

//void show(int flag)
//{
//  if(flag & ONE)  printf("hello one\n");
//  if(flag & TWO)  printf("hello two\n");
//  if(flag & THREE)  printf("hello three\n");
//}
//
//int main(int argc, char* argv[])
//{
//  show(ONE);
//  show(TWO);
//  show(ONE | TWO | THREE);
//  show(ONE | THREE);
//
// // if(argc != 2)
// // {
// //   printf("%s\n", "argc error!");
// //   return 1;
// // }
// // FILE* fp = fopen(argv[1], "r");
// // if(fp == NULL)
// // {
// //   perror("fopen");
// //   return 2;
// // }
// // // 按行读取文件
// // char line[16];
// // // fgets会自动在结尾添加\0
// // while(fgets(line, sizeof(line), fp) != NULL)
// // {
// //   fprintf(stdout, "%s", line);
// // }
//  //const char* s1 = "Hello fwrite\n";
//  //fwrite(s1, strlen(s1), 1, fp);
//  //const char* s2 = "Hello fprints\n";
//  //fprintf(fp, "%s", s2);
//  //const char* s3 = "Hello fputs\n";
//  //fputs(s3, fp);
//  //fclose(fp);
//
//  return 0;
//}
